/**
 * 导出文件
 * @param {Object} res  后端返回的响应结果
 */
export const exportFile = res => {
	downLoadFileBlob(
		res.data,
		res.headers['content-type'],
		decodeURIComponent(res.headers['content-disposition'].match(/filename\**=(.+\.[a-zA-Z]+)$/)[1])
	)
}
/**
 * @description a标签的形式下载文件流文件
 * @version 1.0.0
 * @author Yangx
 * @param { ArrayBuffer | Blob } data - 二进制blob或arrayBuffer数据
 * @param { String } type - 文档的mime类型
 * @param { String } name - 下载的文档名称，需要带上后缀
 *
 */
export function downLoadFileBlob(data, type, name) {
	const blob = new Blob([data], { type })
	const fileName = name
	if ('download' in document.createElement('a')) {
		// 非IE下载
		const elink = document.createElement('a')
		elink.download = fileName
		elink.style.display = 'none'
		elink.href = URL.createObjectURL(blob)
		document.body.appendChild(elink)
		elink.click()
		URL.revokeObjectURL(elink.href) // 释放URL 对象
		document.body.removeChild(elink)
	} else {
		// IE10+下载
		navigator.msSaveBlob(blob, fileName)
	}
}
/**
 * @description a标签的形式下载文件流文件
 * @version 1.0.0
 * @author Yangx
 * @param { ArrayBuffer | Blob } data - 二进制blob或arrayBuffer数据
 * @param { String } type - 文档的mime类型
 * @param { String } name - 下载的文档名称，需要带上后缀
 *
 */
export function downLoadFileUrl(url, name) {
	const fileName = name.split('.')[0]
	if ('download' in document.createElement('a')) {
		// 非IE下载
		const elink = document.createElement('a')
		elink.download = fileName
		elink.style.display = 'none'
		elink.href = url
		document.body.appendChild(elink)
		elink.click()
		document.body.removeChild(elink)
	} else {
		iframeDownLoadFile(url)
	}
}

/**
 * @description iframe的形式下载文件
 * @version 1.0.0
 * @author Yangx
 * @param { String } url - 文件地址
 */
export function iframeDownLoadFile(url) {
	var iframe = document.createElement('iframe')
	iframe.src = url
	iframe.style.display = 'none'
	iframe.onload = function () {
		console.debug('start downloading...')
		document.body.removeAttribute(iframe)
	}
	document.body.appendChild(iframe)
}
